package com.yuw.iodemo;

import java.io.*;

public class TestDriver01 {
    public static void main(String[] args) {
        test01();
    }

    /**
     * IO流的案例： 读取文件并写入新文件
     */
    private static void test01() {
        try {
            // 声明一个输入流对象
            InputStreamReader inputStreamReader =
                    new InputStreamReader(new FileInputStream("E:/temp/filesdemo2/file1.txt"), "UTF-8");
            // 声明一个对象输出流
            OutputStreamWriter outputStreamWriter =
                    new OutputStreamWriter(new FileOutputStream("E:/temp/filesdemo2/file1_out.txt", true), "UTF-8");

            // 读取文件内容
            // 声明一个用于读取文件的临时缓存的数组对象，长度可以自定义
            char[] chars = new char[1024];
            // 读取的长度
            int len = -1;
            // 读取数组
            System.out.println("读取的内容：");
            do {
                len = inputStreamReader.read(chars, 0, 1024);
                // 读取到了内容，然后再进行转换
                if (len > 0) {
                    // 读出的内容放入了 chars数组中，然后进行相关的业务逻辑处理
                    String string = new String(chars, 0, len);
                    System.out.print(string);

                    // 业务逻辑处理，把读取的内容重新写入新的文件中
                    outputStreamWriter.write(chars, 0, len);
                    // 清空和刷新写出缓存区
                    outputStreamWriter.flush();
                }

            } while (len > 0);

            // 业务处理完成之后，回收资源 --- 资源回收也可以写在 finally 部分
            inputStreamReader.close();
            outputStreamWriter.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
